package com.vegetable.modules.service.finance;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vegetable.common.utils.R;
import com.vegetable.modules.entity.finance.CustomerCollectionAlert;
import com.vegetable.modules.entity.finance.po.CustomerCollectionAlertQueryPO;
import com.vegetable.modules.entity.finance.vo.CustomerCollectionAlertVO;

/**
 * <p>
 * 客户回款预警设置 服务类
 * </p>
 *
 * @author vegetable
 * @since 2025-10-24
 */
public interface ICustomerCollectionAlertService extends IService<CustomerCollectionAlert> {

    /**
     * 分页查询客户回款预警设置
     *
     * @param queryPO 查询参数
     * @return 分页数据
     */
    IPage<CustomerCollectionAlertVO> queryPage(CustomerCollectionAlertQueryPO queryPO);

    /**
     * 保存客户回款预警设置
     *
     * @param alert 预警设置
     * @return 操作结果
     */
    R saveAlert(CustomerCollectionAlert alert);

    /**
     * 更新客户回款预警设置
     *
     * @param alert 预警设置
     * @return 操作结果
     */
    R updateAlert(CustomerCollectionAlert alert);

    /**
     * 删除客户回款预警设置
     *
     * @param id 预警设置ID
     * @return 操作结果
     */
    R deleteAlert(Long id);

    /**
     * 启用/禁用客户回款预警
     *
     * @param id 预警设置ID
     * @param isEnabled 是否启用
     * @return 操作结果
     */
    R toggleAlert(Long id, Integer isEnabled);

    /**
     * 根据客户ID获取预警设置
     *
     * @param customerId 客户ID
     * @param regionId 台账ID
     * @return 预警设置
     */
    CustomerCollectionAlert getByCustomerId(Long customerId, Integer regionId);
}
